/**
 * 获取带标签的工具列表API
 * 从数据库中查询所有工具及其关联的标签信息
 */

import type { ToolItem } from '~/types/tools'

/**
 * 处理获取带标签工具列表的请求
 * 执行多表联查，获取工具及其标签信息
 */
export default defineEventHandler(async (event) => {
  try {
        // 获取请求参数
        const query = getQuery(event);
        
        // 提取微信应用ID和密钥
        const toolId = query.toolId as string;    // 工具id
        
        // 构建微信API请求URL
        const url = `http://api.itoolsu.cn/api/tools/${toolId}/detail`;

        type ResData = ToolItem & {
            title: string,
            tabId: number,
            tags: { tagName: string }[],
        }
        
        // 调用微信接口获取AccessToken
        const res: { data: ResData, success: boolean } = await $fetch(url);

        if (!res.success) {
            return {
                success: false,
                data: null,
            }
        }

        const tags = (res.data.tags as { tagName: string }[]) || [];
        const data = {
            ...res.data,
            categoryId: res.data.tabId,
            toolName: res.data.title,
            tags: tags.map(tag => tag.tagName),
        }

        // 返回成功响应
        return {
            success: true,
            data,
        }
    }
    catch (error) {
        // 错误处理：记录错误日志并返回500错误
        console.error('Database query error:', error)
        throw createError({
            statusCode: 500,
            statusMessage: '数据库查询失败'
        })
    }
});
